//
//  NSDate+EXT.swift
//  新浪微博Swift
//
//  Created by 郝俊聪 on 15/5/25.
//  Copyright (c) 2015年 heima. All rights reserved.
//

import UIKit

extension NSDate {
    
    ///使日期字符串 创建NSDate
    class func createDate(fullDateString:String)->NSDate?{
       
        //创建fomater
        let ft = NSDateFormatter()
        //设置本地化
        // 2. 要指定日期的地区，Xcode 6.3 beta 还不需要，地区需要指定英语
        // 注意：在真机调试的时候，一定要指定区域，否则以前版本同样无法转换
        ft.locale = NSLocale(localeIdentifier: "en")
        
        //设置日期格式
        ft.dateFormat = "EEE MMM dd HH:mm:ss zzz yyyy"
       
        //生成日期
        return ft.dateFromString(fullDateString)
    }
    
    ///根据NSDate 获得日期距现在日期的详情“当天”“刚刚”
    /**
    返回日期的完整描述信息
    
    刚刚(一分钟内)
    X分钟前(一小时内)
    X小时前(当天)
    ------
    昨天 HH:mm(昨天)
    MM-dd(当年)
    yyyy-MM-dd HH:mm(更早期)
    
    NSCalendar: 提供了非常非常非常丰富的日期处理函数
    */
    func fullDescription()->String{
        
        //用日历类获得当前的日期
        let calendar = NSCalendar.currentCalendar()
        
        //创建datefomater
        let ft = NSDateFormatter()
        
        //当天
        if calendar.isDateInToday(self){
            //获取日期与当前时间的差值
            let delta = Int(NSDate().timeIntervalSinceDate(self))
            if delta < 60 {
                return "刚刚"
            }
            
            if delta < 3600{
               return "\(delta/60)分钟前"
            }
            return "\(delta/3600)小时前"
        }
        
        //昨天
        if calendar.isDateInYesterday(self){
           ft.dateFormat = "昨天 HH:mm"
           return ft.stringFromDate(self)
        }
        
        //计算年度差值
        let coms = calendar.components(NSCalendarUnit.CalendarUnitYear, fromDate: NSDate(), toDate: self, options: NSCalendarOptions(0))
        
        //今年
        if coms.year == 0 {
           ft.dateFormat = "MM-dd"
           return ft.stringFromDate(self)
        }
        
        //剩下的都是往年了
        ft.dateFormat = "yyyy-MM-dd HH:mm"
        return ft.stringFromDate(self)
    }
    
    
    
   
}
